最終確認日

RPC(Remote Procedure Call)は、ネットワーク越しに関数を呼び出すための仕組み。 Godot では、プレイヤー間やホスト・クライアント間で関数の実行を同期するために使われる。

特徴

ネットワークゲームでは、あるプレイヤーの行動を他のプレイヤーやサーバーに伝える必要がある。RPC を使うことで、ローカルで関数を呼び出すような感覚で、リモート上の処理を実行できる。

基本構文(Godot)

  • 関数に @rpc を付けることで、ネットワーク越しに呼び出し可能になる。
  • 呼び出しは .rpc() または .rpc_id(id) を使う。
@rpc
func show_effect():
    print("Effect triggered")

func _ready():
    show_effect.rpc() # 全プレイヤーに実行

モードの設定パラメータ

mode

  • authority: オーソリティ(通常はサーバー)のみがこの関数を実行可能 (デフォルト)
  • any_peer: 任意のピア(プレイヤー)がこの関数を実行可能

sync

  • call_local: 呼び出した本人も含めて全員に実行(自分+他人)
  • call_remote: 自分以外にだけ実行(自分には影響しない) (デフォルト)

transfer_mode

  • unreliable: 到達保証なし、順序保証なし(最も高速)(デフォルト)
  • unreliable_ordered: 到達保証なし、順序は保証(中程度)
  • reliable: 到達保証あり、順序保証あり(最も信頼性が高いが重い)

モードの設定の参考例

用途 mode sync transfer_mode
チャット送信 any_peer call_local reliable
プレイヤーのアニメーション authority call_remote unreliable
スキルの発動通知 authority call_local reliable
エフェクトの表示 any_peer call_local unreliable

モードのデフォルト値

rpc(mode: String = "authority", sync: String = "call_remote", transfer_mode: String = "unreliable", transfer_channel: int = 0)
サイトアイコン
公開日
更新日